/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ifrr.gepro.pessoa.handler;

import br.ifrr.gepro.pessoa.bean.FuncaoTecBean;
import br.ifrr.gepro.pessoa.bean.PessoaBean;
import br.ifrr.gepro.pessoa.bean.TecnicoBean;
import br.ifrr.gepro.pessoa.dao.FuncaoTecDao;
import br.ifrr.gepro.pessoa.dao.PessoaDao;
import br.ifrr.gepro.pessoa.dao.TecnicoDao;
import br.ifrr.gepro.util.DAOException;
import br.ifrr.gepro.util.JsfUtil;
import br.ifrr.gepro.util.Navegacao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

@ManagedBean(name = "tecnico")
@SessionScoped
public class TecnicoMB {

    private TecnicoBean novotecnico = new TecnicoBean();
    private PessoaBean novaPessoaBean = new PessoaBean();
    private int etapaCadastro = 0;
    private HtmlSelectOneMenu funcaoSelecionada = new HtmlSelectOneMenu();
    private ArrayList<TecnicoBean> listaTecnicos = new ArrayList<TecnicoBean>();

   

    public String preparaCadastro() {
        setEtapaCadastro(0);
        novotecnico = new TecnicoBean();
        novaPessoaBean = new PessoaBean();
        return Navegacao.paginaCadTecnico;
    }

    public String preparaListar() {
        return null;
    }

    public String editar() throws DAOException {
        setEtapaCadastro(0);
        int t = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tecnico"));
        novotecnico = (TecnicoBean) new TecnicoDao().selecionar(t);
        return Navegacao.paginaCadTecnico;
    }

    public String excluir() throws DAOException {
        try {
            int t = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idTecnico"));
            new TecnicoDao().excluir(new TecnicoBean(t));
            JsfUtil.showMessageInfo("Operação realizada com Sucesso!");
        } catch (Exception e) {

            System.out.println(e.getMessage());
            System.out.println(e.getCause());
            JsfUtil.showMessageErro("Erro!");

        }
        return null;
    }

    public String salvar() {
        System.out.println("iniciando processo de salvar");
        try {
            novotecnico.setFkFuncao((FuncaoTecBean) new FuncaoTecDao().selecionar(Integer.parseInt(funcaoSelecionada.getValue().toString())));
            if (novotecnico.getIdTecnico() != null && novaPessoaBean.getIdPessoa() != null) {
                //Integer idPessoa = Integer.parseInt(JsfUtil.getValorDeParamentro("idPessoa"));
                //novoCliente.setFkPessoa((PessoaBean)new PessoaDao().selecionar(idPessoa));
                new PessoaDao().alterar(novaPessoaBean);
                new TecnicoDao().alterar(novotecnico);

                //PessoaMB p = new PessoaMB();
                //p.setNovapessoa((PessoaBean) new PessoaDao().selecionar(idPessoa));
                //JsfUtil.setMB(p, "pessoa");
                JsfUtil.showMessageInfo("Dados salvos com Sucesso!");
            } else {
                new PessoaDao().inserir(novaPessoaBean);
                System.out.println(novaPessoaBean.getIdPessoa());
                
                //Integer idPessoa = Integer.parseInt(JsfUtil.getValorDeParamentro("idPessoa"));
                
                novotecnico.setFkPessoa(novaPessoaBean);
                
                new TecnicoDao().inserir(novotecnico);

                //PessoaMB p = new PessoaMB();
                //JsfUtil.setMB(p, "pessoa");
                JsfUtil.showMessageInfo("Dados salvos com Sucesso!");
            }
        } catch (Exception e) {

            System.out.println(e.getMessage());
            System.out.println(e.getCause());
            JsfUtil.showMessageErro("Erro!");

        }
        etapaCadastro = 1;
        return null;
    }

    public String cancelar() {
        return Navegacao.paginaPrincipal;
    }

    public TecnicoBean getNovotecnico() {
        return novotecnico;
    }

    public void setNovotecnico(TecnicoBean novotecnico) {
        this.novotecnico = novotecnico;
    }

    /**
     * @return the etapaCadastro
     */
    public int getEtapaCadastro() {
        return etapaCadastro;
    }

    public HtmlSelectOneMenu getFuncaoSelecionada() {
        return funcaoSelecionada;
    }

    public void setFuncaoSelecionada(HtmlSelectOneMenu funcaoSelecionada) {
        this.funcaoSelecionada = funcaoSelecionada;
    }

    /**
     * @param etapaCadastro the etapaCadastro to set
     */
    public void setEtapaCadastro(int etapaCadastro) {
        this.etapaCadastro = etapaCadastro;
    }

    public ArrayList<TecnicoBean> getListaTecnicos() throws DAOException {
        listaTecnicos = (ArrayList<TecnicoBean>) new TecnicoDao().listar();
        return listaTecnicos;
    }

    public void setListaTecnicos(ArrayList<TecnicoBean> listaTecnicos) {
        this.listaTecnicos = listaTecnicos;
    }

    public PessoaBean getNovaPessoaBean() {
        return novaPessoaBean;
    }

    public void setNovaPessoaBean(PessoaBean novaPessoaBean) {
        this.novaPessoaBean = novaPessoaBean;
    }
     public List<TecnicoBean> getTecnicos() throws DAOException {
        return new TecnicoDao().listar();

    }

    public List<SelectItem> getTecnicosCombo() throws DAOException {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (TecnicoBean t : getTecnicos()) {
            lista.add(new SelectItem(t.getIdTecnico(), t.getFkPessoa().getNome()));
        }
        return lista;
    }
}
